﻿using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using ADIGRE.Domain;

namespace ADIGRE.MVC3.Web.Util
{
    //gera lista de itens
    public class ComboListItem
    {
        
        /// <summary>
        /// p.eduardo.silva = 20130619:
        /// Anos em inteiro
        /// </summary>
        /// <returns></returns>
        public IEnumerable<SelectListItem> ComboAnos(List<int> anos)
        {
            return anos.Select(x => new SelectListItem { Text = x.ToString(), Value = x.ToString(), Selected = (x == System.DateTime.Now.Year) })
                        .OrderByDescending(x => x.Text);
        }

        /// <summary>
        /// p.eduardo.silva = 20130706:
        /// Perfil de acesso
        /// </summary>
        /// <returns></returns>
        public IEnumerable<SelectListItem> ComboPerfisAcesso()
        {
            var perfil = new List<SelectListItem>();
            perfil.Add(new SelectListItem { Text = "Consulta", Value = EnumPerfilAcesso.Consulta.ToString(), Selected = false });
            perfil.Add(new SelectListItem { Text = "Administrador", Value = EnumPerfilAcesso.Administrador.ToString(), Selected = false });
            perfil.Add(new SelectListItem { Text = "Tesoureiro", Value = EnumPerfilAcesso.Tesoureiro.ToString(), Selected = false });
            return perfil.OrderBy(x => x.Value);
        }

        /// <summary>
        /// p.eduardo.silva = 20130619:
        /// Meses do ano
        /// </summary>
        /// <returns></returns>
        public IEnumerable<SelectListItem> ComboMeses()
        {
            int mesAtual = System.DateTime.Now.Month;
            var meses = new List<SelectListItem>();
            meses.Add(new SelectListItem { Text = "Janeiro", Value = "01", Selected = (mesAtual == 1) });
            meses.Add(new SelectListItem { Text = "Fevereiro", Value = "02", Selected = (mesAtual == 2) });
            meses.Add(new SelectListItem { Text = "Março", Value = "03", Selected = (mesAtual == 3) });
            meses.Add(new SelectListItem { Text = "Abril", Value = "04", Selected = (mesAtual == 4) });
            meses.Add(new SelectListItem { Text = "Maio", Value = "05", Selected = (mesAtual == 5) });
            meses.Add(new SelectListItem { Text = "Junho", Value = "06", Selected = (mesAtual == 6) });
            meses.Add(new SelectListItem { Text = "Julho", Value = "07", Selected = (mesAtual == 7) });
            meses.Add(new SelectListItem { Text = "Agosto", Value = "08", Selected = (mesAtual == 8) });
            meses.Add(new SelectListItem { Text = "Setembro", Value = "09", Selected = (mesAtual == 9) });
            meses.Add(new SelectListItem { Text = "Outubro", Value = "10", Selected = (mesAtual == 10) });
            meses.Add(new SelectListItem { Text = "Novembro", Value = "11", Selected = (mesAtual == 11) });
            meses.Add(new SelectListItem { Text = "Dezembro", Value = "12", Selected = (mesAtual == 12) });
            return meses.OrderBy(x => x.Value);
        }

        /// <summary>
        /// p.eduardo.silva = 20130619:
        /// Modalidades de pagamento
        /// </summary>
        /// <returns></returns>
        public IEnumerable<SelectListItem> ComboModalidadePagamento()
        {
            var Modalidades = new List<SelectListItem>();
            Modalidades.Add(new SelectListItem { Text = "À vista", Value = EnumModalidadePagamento.ParcelaUnica.ToString(), Selected = false });
            Modalidades.Add(new SelectListItem { Text = "Prestação Fixa", Value = EnumModalidadePagamento.ParcelaFixa.ToString(), Selected = false });
            Modalidades.Add(new SelectListItem { Text = "Prestação Variável", Value = EnumModalidadePagamento.ParcelaVariavel.ToString(), Selected = false });
            Modalidades.Add(new SelectListItem { Text = "Prazo Indeterminado", Value = EnumModalidadePagamento.ParcelaContinuada.ToString(), Selected = false });
            return Modalidades.OrderBy(x => x.Text);
        }

        public IEnumerable<SelectListItem> ComboPessoas(List<Pessoa> Pessoas)
        {
            return Pessoas.Select(x => new SelectListItem { Text = x.NmPessoa, Value = x.Id.ToString(), Selected = false })
                            .OrderBy(x => x.Text);
        }

        public IEnumerable<SelectListItem> ComboDespesas(List<Despesa> Despesas)
        {
            Despesas.Add(new Despesa() { NmDespesa = "(Outros)" });
            return Despesas.Select(x => new SelectListItem { Text = x.NmDespesa, Value = x.Id.ToString(), Selected = false })
                            .OrderBy(x => x.Text);
        }

        public IEnumerable<SelectListItem> ComboReceitas(List<Receita> Receitas)
        {
            return Receitas.Select(x => new SelectListItem { Text = x.NmReceita, Value = x.Id.ToString(), Selected = false })
                            .OrderBy(x => x.Text);
        }
    }
}